1. Field of the Invention
The present invention generally relates to a method, apparatus, and computer-readable medium for configuring a computer system with a software configuration tool.
2. Description of the Related Art
Providers of high-end computer systems typically use a highly complex configuration system to configure a computer system to a customer's specifications. The configuration system includes a user interface that provides access to products data. Through the user interface, an operator selects a base system (e.g., a server model) and is then presented with configurable options which may be selected to be added to the selected base system. For a given set of operator selections, the configuration system determines whether the selections define a valid configured system. That is, the configuration system determines whether the operator selections are compatible and complete. If so, the configuration process is complete and, in some cases, additional steps such as, configuration validation, availability check, and the like are performed before the configured system is put into the order processing system. Examples of computer system configuration and validation are provided in U.S. Pat. No. 5,515,524, entitled “Method and Apparatus for Configuring Systems”, which is hereby incorporated by reference in its entirety.
Conventional configuration systems for computer systems are highly complex. A computer system output by a configuration system represents a valid state the determination of which depends upon a set of applicable part rules and part data. For each part within a user-selected configuration, a different set of possible part rules and part data may be provided for use in validating the selected configuration. From the set of possible part rules and part data, only certain part rules and part data may actually be applicable for validating the selected configuration.
For example, a user-selected configuration for a computer system may contain a server software selection. The server software may interact with other software on the computer system, such as operating system software selected by the user. Accordingly, the server software may have several possible rules which are used to determine whether the selected server software is compatible with different operating systems (which may also be selected by the user). Which of the possible rules for the server software actually apply may depend on what operating system the user actually selects. However, whether such rules apply may also be dependent upon the presence of other parts within the computer system, such as a specific network communication device. Many parts which a user selects for a given configuration may have many such dependencies on other parts within the configuration.
Because of the large number of possible configurations, determining which part rules and part data apply may be a difficult task. Present configuration systems deal with the task of determining applicable part rules and part data by either providing a limited number of predefined configurations, or by enumerating tests for each part (e.g., custom code for each part) which determine what part data and what part rules apply. In a configuration system where a limited number of predefined configurations is provided, the possible part data and part rules for each predefined configuration may be established and validated when the configuration is defined (e.g., by the configuration system developer). While each predefined configuration may be valid, the user only has the predefined configurations to choose from, and thus has limited choices. In a configuration system where part rules and part data are determined by part-specific, specially programmed tests for each possible configuration of the computer system, new configurations (composed, for instance, of newly manufactured parts) may not be accommodated by the specially programmed tests. Accordingly, current methods for validating the configuration of a computer system are inflexible, difficult to modify, and offer the user a limited number of configuration options.
Therefore, there is a need for improved methods for validating a user configuration of a computer system.